﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using LPrisaMVC.Entities;
using LPrisaMVC.BusinessLogic;
using Microsoft.Practices.Unity;
using Microsoft.Practices.Unity.Configuration;

namespace LPrisaMVC.WebMVC4.Controllers
{
    public class CierreCajaController : Controller
    {
        //
        // GET: /CierreCaja/
        [Dependency]
        public IHistorialVentaBL historialBL { get; set; }

        [Dependency]
        public IVentaBL ventaBL { get; set; }

        [Authorize(Roles = "admin, ventas")]
        public ActionResult Index()
        {
            var _ventasCierre = ventaBL.GetFromVentabyCliente("varios");
            if (_ventasCierre.Count <= 0)
            {
                ViewData["ALERT"] = "Ningun cierre de caja realizado!!!";
            }
            return View(_ventasCierre);
        }

        [Authorize(Roles = "admin, ventas")]
        public ActionResult CierreCaja()
        {
            var _ventasCierre = ventaBL.GetFromVentabyCliente("varios");
            if (_ventasCierre.Count <= 0)
            {
                ViewData["ALERT"] = "Ningun cierre de caja realizado!!!";
            }
            return View(_ventasCierre);
        }

        [HttpPost]
        [Authorize(Roles = "admin, ventas")]
        public ActionResult CierreCaja(string fech="")
        {
            try
            {
                var fecha = Convert.ToDateTime(fech.ToString());

                var existeCierre = ventaBL.GetFromVentabyClienteAndFecha("varios", fecha);

                var prodHist = historialBL.GetFromHistorialVentasbyFechasAndProductoAndMenudeo(fecha, fecha, "", true);

                if (existeCierre.Count < 1)
                {
                    if (prodHist.Count > 0)
                    {
                        historialBL.CierreDeCaja(fecha);
                        ViewData["ALERT"] = "Cierre de Caja Exitoso!!!";
                    }
                    else
                        ViewData["ALERT"] = "No existen ventas al menudeo para el día elegido!!!";

                }
                else
                {
                    ViewData["ALERT"] = "Ya se realizó el cierre de caja para este día!!! \n Desea volver a realizarlo?";
                }
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }

    }
}
